Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

.specify/extensions/git/scripts/powershell/git-common.ps1 renovate/actions-checkout-7.x (2a019bd0) Text, 1.91 KB

T8b949e#!/usr/bin/env pwsh
T8b949e# Git-specific common functions for the git extension.
T8b949e# Extracted from scripts/powershell/common.ps1 — contains only git-specific
T8b949e# branch validation and detection logic.

Tff7b72function Tffa657Test-HasGit Tb4b4b4{
Tff7b72paramTb4b4b4(Tff7b72[string]Te6edf3$RepoRoot Tb4b4b4= Tb4b4b4(Tffa657Get-LocationTb4b4b4)Tb4b4b4)
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72-not Tb4b4b4(Tffa657Test-Path Tb4b4b4(Tffa657Join-Path Te6edf3$RepoRoot Ta5d6ff'.git'Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3$false Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72-not Tb4b4b4(Tffa657Get-Command Te6edf3git Te6edf3-ErrorAction Te6edf3SilentlyContinueTb4b4b4)Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3$false Tb4b4b4}
Te6edf3git Te6edf3-C Te6edf3$RepoRoot Te6edf3revTe6edf3-parse Tb4b4b4-Tff7b72-isTe6edf3-insideTe6edf3-workTe6edf3-tree Te6edf32Tb4b4b4>Te6edf3$null Tb4b4b4| Tffa657Out-Null
Tff7b72return Tb4b4b4(Te6edf3$LASTEXITCODE Tff7b72-eq Te6edf30Tb4b4b4)
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Te6edf3$false
Tb4b4b4}
Tb4b4b4}

Tff7b72function Tffa657Get-SpecKitEffectiveBranchName Tb4b4b4{
Tff7b72paramTb4b4b4(Tff7b72[string]Te6edf3$BranchTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3$Branch Tff7b72-match Ta5d6ff'^([^/]+)/([^/]+)$'Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3$MatchesTb4b4b4[Te6edf32Tb4b4b4]
Tb4b4b4}
Tff7b72return Te6edf3$Branch
Tb4b4b4}

Tff7b72function Tffa657Test-FeatureBranch Tb4b4b4{
Tff7b72paramTb4b4b4(
Tff7b72[string]Te6edf3$BranchTb4b4b4,
Tff7b72[bool]Te6edf3$HasGit Tb4b4b4= Te6edf3$true
Tb4b4b4)

T8b949e# For non-git repos, we can't enforce branch naming but still provide output
Tff7b72if Tb4b4b4(Tff7b72-not Te6edf3$HasGitTb4b4b4) Tb4b4b4{
Tffa657Write-Warning Ta5d6ff"Ta5d6ff[specify] Warning: Git repository not detected; skipped branch validationTa5d6ff"
Tff7b72return Te6edf3$true
Tb4b4b4}

Te6edf3$raw Tb4b4b4= Te6edf3$Branch
Te6edf3$Branch Tb4b4b4= Tffa657Get-SpecKitEffectiveBranchName Te6edf3$raw

T8b949e# Accept sequential prefix (3+ digits) but exclude malformed timestamps
T8b949e# Malformed: 7-or-8 digit date + 6-digit time with no trailing slug (e.g. "2026031-143022" or "20260319-143022")
Te6edf3$hasMalformedTimestamp Tb4b4b4= Tb4b4b4(Te6edf3$Branch Tff7b72-match Ta5d6ff'^[0-9]{7}-[0-9]{6}-'Tb4b4b4) Tff7b72-or Tb4b4b4(Te6edf3$Branch Tff7b72-match Ta5d6ff'^(?:\d{7}|\d{8})-\d{6}$'Tb4b4b4)
Te6edf3$isSequential Tb4b4b4= Tb4b4b4(Te6edf3$Branch Tff7b72-match Ta5d6ff'^[0-9]{3,}-'Tb4b4b4) Tff7b72-and Tb4b4b4(Tff7b72-not Te6edf3$hasMalformedTimestampTb4b4b4)
Tff7b72if Tb4b4b4(Tff7b72-not Te6edf3$isSequential Tff7b72-and Te6edf3$Branch Tff7b72-notmatch Ta5d6ff'^\d{8}-\d{6}-'Tb4b4b4) Tb4b4b4{
Tff7b72[Console]Tb4b4b4:Tb4b4b4:Te6edf3ErrorTb4b4b4.Te6edf3WriteLineTb4b4b4(Ta5d6ff"Ta5d6ffERROR: Not on a feature branch. Current branch: Ta5d6ff$Ta5d6ffrawTa5d6ff"Tb4b4b4)
Tff7b72[Console]Tb4b4b4:Tb4b4b4:Te6edf3ErrorTb4b4b4.Te6edf3WriteLineTb4b4b4(Ta5d6ff"Ta5d6ffFeature branches should be named like: 001-feature-name, 1234-feature-name, or 20260319-143022-feature-nameTa5d6ff"Tb4b4b4)
Tff7b72return Te6edf3$false
Tb4b4b4}
Tff7b72return Te6edf3$true
Tb4b4b4}

Served by rngit 1.5.2 - Generated in 0.03s